react - redux的使用
作用: 就是在react中使用redux

使用: 
1. 下载包 npm i react-redux 

2. 在入口文件中, 要从react-redux中引入Provider 

```js

root.render(<Provider store={store对象}>
    <App></App>
</Provider>)

```

3. 在需要使用redux数据的组件中,利用connect,创建一个容器组件

```js
import {connect} from 'react-redux'

function mapStateToProps(state){
    return {
        属性: state.xxx
    }
}

function mapDispatchToProps(dispatch){
    return {
        属性: function(){
            dispatch(action对象)
        }
    }
}
const WithXxx = connect(mapStateToProps,mapDispatchToProps)(展示组件)
```


map系列的简写: 

```js
const WithXxx = connect((state)=>({属性: state.xxx}),{属性: actionCreator})(展示组件)

```

redux 

使用中间件

redux-thunk: 让redux中可以执行异步操作

1. 下载 npm i redux-thunk 
2. 在store.js中使用redux-thunk这个中间件

import thunk from 'redux-thunk'
import {applyMiddleware,createStore} from 'redux'
createStore(reducer,applyMiddleware(thunk))

3. 为了配置redux-thunk,在actions.js中.去定义异步action

export function xxxAsync(){
    return (dispatch)=>{
        执行异步操作,成功之后,调用dispatch
    }
}


合并reducer

实际开发中,肯定要协作开发. 就会有多个reducer函数. 但是创建store时,只能有一个. 所以要把多个
reducer合并成一个

import { combineReducers } from 'redux'
const rooReducer = combineReducers({
    属性: reducer函数,
    属性: reducer函数,
    属性: reducer函数,
})
需要注意: 合并reducer之后,redux数据结构发生变化. 只需要在react-redux使用时,传递数据的mapStateToProps
位置调整一下,其他的都没有问题

